Carga de paquetes

library(DT)
library(ggplot2)
library(plotly)
library(dplyr)
library(leaflet)
library(sf)
library(readxl)
library(tidyverse)
library(lubridate)

Carga de datos y lectura

estadisticas_policiales <-
  readxl::read_excel("C:/Users/PC/estadisticaspoliciales2021.xls")

Creación de tabla y gráficos

Tabla

estadisticas_policiales %>%
  dplyr::select(Delito,
                Fecha,
                Victima,
                Edad,
                Genero,
                Provincia,
                Canton) %>%
  mutate(Fecha = as.Date(Fecha, format = "%d/%m/%Y")) %>%
  datatable(
    colnames = c(
      "Delito",
      "Fecha",
      "Victima",
      "Edad",
      "Género",
      "Provincia",
      "Cantón"
    ),
    options = list(
      pageLength = 10,
      language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    ),
  )
## Warning in instance$preRenderHook(instance): It seems your data is too big
## for client-side DataTables. You may consider server-side processing: https://
## rstudio.github.io/DT/server.html

Gráfico de barras simples (tipos de delito)

grafico_num_delitos <-
estadisticas_policiales %>%
  count(Delito) %>%
  ggplot(aes(x = reorder(Delito, n), y = n)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  ggtitle("Cantidad de delitos por tipo de delito") +
  xlab("Delito") +
  ylab("Número de registros") +
  theme_light()

ggplotly(grafico_num_delitos) %>% config(locale = 'es')

Gráfico de barras simples (delitos por mes)

a <-
  estadisticas_policiales %>%
  mutate(meses = lubridate::month(Fecha))

b <-c("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Setiembre", "Octubre", "Noviembre")
grafico_delitos_meses <-
  a %>%
  count(meses) %>%
  ggplot(level = level_order, (aes(x = reorder (b, meses), y = n))) +
  geom_bar(stat = "identity") +
  ggtitle("Delitos por mes del año 2021") +
  xlab("Mes") +
  ylab("Número de registros") +
  theme_light()

ggplotly(grafico_delitos_meses)

Gráfico de barras apiladas (delitos por género)

grafico_delitos_genero <-
  estadisticas_policiales %>%
  ggplot(aes(x = Delito, fill = Genero)) +
  geom_bar(position = "fill") +
  ggtitle("Delitos por género") +
  xlab("Delitos") +
  ylab("Proporción") +
  labs(fill = "Género") +
  coord_flip() +
  theme_light() 
  
ggplotly(grafico_delitos_genero) %>% config(locale = 'es') 

Gráfico de barras simples (delitos por cantones)

grafico_delitos_cantones <-
  estadisticas_policiales %>%
  count(Canton) %>%
  filter(Canton == "SAN JOSE" |
           Canton == "ALAJUELA" |
           Canton == "CARTAGO" | Canton == "HEREDIA") %>%
  ggplot(aes(x = reorder(Canton, n), y = n)) +
  geom_bar(stat = "identity") +
  ggtitle("Delitos en los cantones centrales") +
  xlab("Cantón") +
  ylab("Número de registros") +
  coord_flip() +
  theme_light()

ggplotly(grafico_delitos_cantones)